/*
    异步代码有优先级关系，微任务优先级高先执行，宏任务优先级低后执行
    宏任务-宿主发起：比如script、setTimeout、setInterval （控制浏览器）
    微任务-js自身发起：Promise.then/catch/finally,process.nextTick,queueMicrotask
    事件轮询执行过程：（虽然浏览器会有管理模块帮你管理异步代码，但是所有代码必须在js的主线程上执行）
        1.执行栈选择最先进入队列的宏任务（一般是script），执行其同步代码直至结束
        2.在执行同步代码的过程中，如果遇到宏任务，则把宏任务交给浏览器对应的管理模块进行管理。浏览器的管理模块一般分为定时器管理模块，ajax管理模块，Dom管理模块，当宏任务的回调需要被执行时，会把回调函数放入回调队列（callback queue）中等待执行
        3.如果遇到微任务（没有管理模块），则直接把微任务的回调放入微任务队列中等待执行
        4.当同步代码执行完成，先清空微任务队列，然后再去宏任务队列中执行宏任务,每执行完一个宏任务，都会再去清空微任务队列
        



*/ 